<?php

/**
 * 从缓存中读取缓存项
 */
if (!function_exists('cache')) {
    function cache($key)
    {
        return Cache::get($key);
    }
}

/**
 * 生成10位绝不重复订单号
 */
if (!function_exists('oneNo')) {
    function onlyNo()
    {
        static $ORDERSN = array();                                        //静态变量
        $ors = date('ymd') . substr(time(), -5) . substr(microtime(), 2, 5);   //生成16位数字基本号
        if (isset($ORDERSN[$ors])) {                                    //判断是否有基本订单号
            $ORDERSN[$ors]++;                                           //如果存在,将值自增1
        } else {
            $ORDERSN[$ors] = 1;
        }
        return $ors . str_pad($ORDERSN[$ors], 2, '0', STR_PAD_LEFT);     //链接字符串
    }
}

/**
 * 生成单个表单HTML元素
 * @param $lable    表单项名称
 * @param $id       id 和 name
 * @param $type     表单类型
 * @param $value    表单默认值
 * @param string $intro 表单提醒字符
 * @return \Illuminate\View\Expression
 */
function inputText($lable, $id, $type, $value, $intro = "")
{
    $html = <<<HTML
    <li>
        <label class="lable">$lable</label>
        <input id="$id" name="$id" type="$type"
            class="dfinput" value="$value"/>
        <i for="$id">$intro</i>
    </li>
HTML;
    return new \Illuminate\View\Expression($html);
}

/**
 * 生成单个TextArea表单项
 * @param $lable        表单项名称
 * @param $id           id 和 name
 * @param $value        表单默认值
 * @param string $intro 表单提醒字符
 * @return \Illuminate\View\Expression
 */
function inputTextArea($lable, $id, $value, $intro = "")
{
    $html = <<<HTML
    <li>
        <label class="lable">$lable</label>
        <textarea id="$id" name="$id" class="textinput" 
            style="margin-top: 10px;">$value</textarea>
        <i for="$id">$intro</i>
    </li>
HTML;
    return new \Illuminate\View\Expression($html);
}

/**
 * 生成单个Select表单项
 * @param $lable        表单项名称
 * @param $id           id 和 name
 * @param $array [value="值",title="标题",selected=是否选中]
 * @param string $intro 表单提醒字符
 */
function inputSelect($lable, $id, $array, $intro = "")
{
    $html = <<<HTML
    <li>
        <label class="lable">$lable</label>
        <select id="$id" name="$id">
HTML;
    foreach ($array as $item) {
        if (isset($item['selected']) && $item['selected']) {
            $html .= "<option value=\"$item[value]\" selected=\"true\">$item[title]</option>";
        } else {
            $html .= "<option value=\"$item[value]\">$item[title]</option>";
        }
    }
    $html .= <<<HTML
        </select>
        <i for="$id">$intro</i>
    </li>
HTML;
    return new \Illuminate\View\Expression($html);
}

/**
 * 生成单行多个input标签
 * @param $lable    表单项名称
 * @param $array [type="类型",id=name,value="默认值",des="鼠标放上提醒"]
 * @param string $intro 提醒字符串
 */
function inputRow($lable, $array, $intro = "")
{
    $html = "<li><label class=\"lable\">$lable</label>";
    foreach ($array as $item) {
        $html .= "<div class=\"sm-input\">";
        $html .= "<input id=\"$item[id]\" name=\"$item[id]\" type=\"$item[type]\" 
                         class=\"dfinput calc\" value=\"$item[value]\"/>&nbsp;&nbsp;&nbsp;&nbsp;";
        $html .= "<i class=\"des calc-text\">$item[des]</i>";
        $html .= "</div>";
    }
    $html .= "<i>$intro</i></li>";
    return new \Illuminate\View\Expression($html);
}

/**
 * 规范文件大小函数
 * @param $filename
 * @return int|string
 */
function getFileSize($filename)
{
    $filesize = filesize($filename);
    if ($filesize >= 1073741824) {
        return round($filesize / 1073741824 * 100) / 100 . ' Gb';
    } elseif ($filesize >= 1048576) {
        return round($filesize / 1048576 * 100) / 100 . ' Mb';
    } elseif ($filesize >= 1024) {
        return round($filesize / 1024 * 100) / 100 . ' Kb';
    } elseif ($filesize > 0) {
        return $filesize . ' Bytes';
    } else {
        return 0;
    }
}

/**
 * 按时间排序打开目录
 * @param $dir
 * @return array
 */
function filesOrderByTime($dir)
{
    $dh = @opendir($dir); // 打开目录，返回一个目录流

    $return = array();
    while ($file = @readdir($dh)) { // 循环读取目录下的文件
        if ($file != '.' and $file != '..') {
            $path = $dir . '\\' . $file; // 设置目录，用于含有子目录的情况
            if (is_dir($path)) {
            } elseif (is_file($path)) {
                $filetime [] = date("Y-m-d H:i:s", filemtime($path)); // 获取文件最近修改日期
                $return [] = $dir . '\\' . $file;
            }
        }
    }
    @closedir($dh); // 关闭目录流

    if (isset($filetime)) {
        array_multisort($filetime, SORT_DESC, SORT_STRING, $return);//按时间排序
    }

    return $return;
}

/**
 * @param $slug 碎片标示
 * @param $type 碎片类型
 */
function fragment ($slug, $type)
{
    $frag = App\Models\Frag::where('slug',$slug)->first();
    if (empty($frag)) {
        return '';
    } else {
        return $frag->$type;
    }
}

